package com.hoshino.momochi.service;

import com.hoshino.momochi.model.domain.Blog;

import java.util.List;
import java.util.concurrent.Future;

public interface BlogService {

    /**
     * 查找该用户 的 所有博客简要信息
     *
     * @param uid
     * @return
     */
    List<Blog> findBlogsByUser(Long uid);

    /**
     * 查找所有博客 简要信息
     *
     * @return
     */
    List<Blog> findAllBriefBlogs();

    /**
     * 获取指定数量 的 博客 nonContent
     *
     * @return
     */
    List<Blog> findPageBriefBlogs(Integer begin, Integer end);


    /**
     * 找到 相应博客 的全部内容
     *
     * @param id
     * @return
     */
    Blog findCompleteById(Long id);

    /**
     * 新增博客
     *
     * @param blog
     */
    void addUserBlog(Blog blog);

    /**
     * 修改 指定 用户 和 博客 id 的 博客
     *
     * @param blog
     */
    void updateUserBlog(Blog blog);

    /**
     * 更新浏览量
     *
     * @param blog
     */
    void updateViews(Blog blog);

    /**
     * 删除指定 的 博客
     *
     * @param uid
     * @param bid
     */
    void delUserBlog(Long uid, Long bid);

    /**
     * 获取 当前登录 用户 关注的博客
     *
     * @param uid
     * @return
     */
    List<Blog> getLocalBlog(Long uid);

    /**
     * 获取点赞数最多的前十个博客
     *
     * @return
     */
    Future<List<Blog>> getMaxLikeBlog();

    /**
     * 获取收藏数最多的前十个博客
     *
     * @return
     */
    Future<List<Blog>> getMaxStarBlog();

    /**
     * 获取浏览量 最多的 前十个博客
     *
     * @return
     */
    Future<List<Blog>> getMaxViewBlog();

    /**
     * 删除 isDelete = 1 的数据
     */
    void delIsDeleteAsTrue();
}
